﻿namespace MicroCloud.Utils
{
    /// <summary>
    /// 业务契约：国际化(I18N)处理程序
    /// </summary>
    public interface II18nHandler
    {
        #region 属性
        /// <summary>
        /// 获取 资源物理路径
        /// </summary>
        string ResourcePath { get; }

        /// <summary>
        /// 获取 默认语言
        /// </summary>
        string DefaultLanguage { get; }

        #endregion

        #region 方法
        /// <summary>
        /// 获取国际化(I18N)字符
        /// </summary>
        /// <param name="key">字符键</param>
        /// <param name="locale">区域语系</param>
        /// <returns>国际化(I18N)字符</returns>
        string Get(string key, Locale locale = null);

        /// <summary>
        /// 增加国际化(I18N)字符
        /// </summary>
        /// <param name="key">资源键</param>
        /// <param name="value">资源值</param>
        /// <param name="locale">区域语系</param>
        void Add(string key, string value, Locale locale = null);

        /// <summary>
        /// 获取指定语言类型的国际化(I18N)资源
        /// </summary>
        /// <param name="langType">语言类型</param>
        /// <returns>国际化(I18N)资源</returns>
        IDictionary<string, string> GetResource(LangType langType);

        /// <summary>
        /// 获取国际化(I18N)资源集合
        /// </summary>
        /// <returns>国际化(I18N)资源集合</returns>
        IDictionary<LangType, IDictionary<string, string>> GetResources();

        #endregion
    }
}